#include "ThreadPool.hpp"
#include "Task.hpp"
#include <memory>
#include <unistd.h>
#include <time.h>
#include <cstring>

int main()
{
    /// 一大堆的代码...

    // std::unique_ptr<ThreadPool<Task> > tp(new ThreadPool<Task>());
    // tp->run();
    ThreadPool<Task>::getInstance()->run();
    srand(time(nullptr) ^ 0x3f);
    int x, y;
    char op;
    const char* opt = "+-*/%";
    while (1)
    {
        // std::cout << "请输入数据1# ";
        // std::cin >> x;
        // std::cout << "请输入数据2# ";
        // std::cin >> y;
        // std::cout << "请输入你要进行的运算#";
        // std::cin >> op;
        x = rand() % 10 + 1;
        y = rand() % 10 + 1;
        op = opt[rand() % strlen(opt)];
        Task t(x, y, op, myMath);
        // std::cout << "你刚刚录入了一个任务: " << t.toTaskString() << "， 确认提交吗？[y/n]# ";
        // char confirm;
        // std::cin >> confirm;
        // if(confirm == 'y') tp->push(t);
        ThreadPool<Task>::getInstance()->push(t);
        sleep(1);
    }
}

// #include "ThreadPool.hpp"
// #include "Thread.hpp"
// #include "unistd.h"

// void *run(void *args)
// {
//     std::string message = (const char *)args;
//     while(true)
//     {
//         std::cout << message << std::endl;
//         sleep(1);
//     }
//     return nullptr;
// }

// int main()
// {
//     ThreadNs::Thread t1(run, (void*)"thread 1 run");
//     ThreadNs::Thread t2(run, (void*)"thread 2 run");

//     t1.start();
//     t2.start();

//     t1.join();
//     t2.join();

//     return 0;
// }